home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / lib / rcscripts / net.modules.d / helpers.d / udhcpc-iproute2 < prev   
Text File  |  2006-04-25  |  2KB  |  82 lines

  1. #!/bin/sh
  2. # Copyright (c) 2004-2005 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4. # $Header$
  5.  
  6. # Contributed by Roy Marples (uberlord@gentoo.org)
  7.  
  8. action=${1}
  9. echo ${action}
  10.  
  11. case "${action}" in
  12.     bound|renew|deconfig)
  13.         # We handle these actions
  14.         ;;
  15.     nak|leasefail)
  16.         # These are valid actions, but we don't handle them
  17.         exit 0
  18.         ;;
  19.     *)
  20.         echo "We don't handle that action" >&2
  21.         exit 1
  22.         ;;
  23. esac
  24.  
  25. [[ ${action} == nak ]] && exit 0
  26.  
  27. # Fix any potential localisation problems
  28. # Note that LC_ALL trumps LC_anything_else according to locale(7)
  29. ip() {
  30.     LC_ALL=C /sbin/ip "$@"
  31. }
  32.  
  33. # We don't flush the link local address
  34. ip link set up dev ${interface} &>/dev/null
  35.  
  36. [[ -z ${MODULES_DIR} ]] && MODULES_DIR=/lib/rcscripts/net.modules.d
  37. source ${MODULES_DIR}/helpers.d/config-system
  38.  
  39. if [[ ${action} == deconfig ]]; then
  40.     ip -f inet addr flush dev ${interface} scope global &>/dev/null
  41.     ip -f inet addr flush dev ${interface} scope host &>/dev/null
  42.     restore_configs
  43.     exit 0
  44. fi
  45.  
  46. # Configure our IP address
  47. ip=${ip// }
  48. subnet=${subnet// }
  49. cidr=$( netmask2cidr ${subnet} )
  50. broadcast=${broadcast// }
  51. [[ -n ${broadcast} ]] && broadcast="broadcast ${broadcast}"
  52.  
  53. # If we don't have our address then we flush it and then add our new one
  54. ip -family inet addr show scope global dev ${interface} | grep inet | grep -q "${ip}/${cidr}"
  55. if [[ $? == 1 ]] ; then
  56.     ip -f inet addr flush dev ${interface} scope global &>/dev/null
  57.     ip -f inet addr flush dev ${interface} scope host &>/dev/null
  58.     ip addr add dev ${interface} ${ip}/${cidr} ${broadcast}
  59.     echo "flushed" > /tmp/action
  60. fi
  61.  
  62. eval dhcp=\" \$\{dhcp_${interface}\} \"
  63. if [[ ${dhcp} != *' nogateway '* ]]; then
  64.     # Configure our default route
  65.     x=$(ip route show | awk '{ if ($1 == "default") {print $3} }')
  66.     for r in ${router}; do
  67.     # We can only have one default route!
  68.     if [[ -z ${x} ]]; then
  69.         ip route add default via ${r} dev ${interface} 2>/dev/null && break
  70.     elif [[ ${x} != ${r} ]]; then
  71.         ip route change default via ${r} dev ${interface} 2>/dev/null && break
  72.     fi
  73.     done
  74. fi
  75.  
  76. # Set our module to udhcpc if it's not set
  77. [[ -z ${module} ]] && module=udhcpc
  78.  
  79. config_system >/dev/null
  80.  
  81. exit 0
  82.